package com.justnow;

public class DailyTemperatures {

    /**
     * 方法一，从后往前遍历，并同时利用已有的数据，进行排除
     * @param T
     * @return
     */
    public int[] dailyTemperatures(int[] T) {
        int length = T.length;
        int[] result = new int[length];

        //从右向左遍历,并且从
        for (int i = length - 2; i >= 0 ;i--) {
            // j += result[j] 是利用已经有的结果进行跳跃
            for (int j = i + 1; j < length; j += result[j]) {
                if (T[j] > T[i]) {
                    // 共有两种情况
                    //1. 第一次循环，即j = i + 1时，那么此时表示小标为i的元素小于其右邻居
                    //2. 不是第一次循环，即j += result[i] 利用已有的结果进行跳跃，知道小标为i的元素小于小标为j的元素
                    result[i] = j - i;
                    break;
                } else if (result[j] == 0) {
                    // 共有两种情况
                    //1. 第一次循环，即j = i + 1时，那么此时表示小标为i的元素大于其右邻居，
                    //如[6, 7, 5, 4, 3, 2, 1] i为1，j为2，对应的元素分别是7和5，此时5之后的元素都小于5，那么后面也找不到大于7的元素
                    //2. 不是第一次循环, j += result[i]的这种情况的内容
                    result[i] = 0;
                    break;
                }
            }
        }
        return result;
    }

    /**
     * 方法二，超级笨的方法
     * @param T
     * @return
     */
    public int[] dailyTemperatures2(int[] T) {
        int length = T.length;
        int[] result = new int[length];

        for (int i = 0; i < length; i++) {
            int current = T[i];
            if (current < 100) {
                for (int j = i + 1; j < length; j++) {
                    if (T[j] > current) {
                        result[i] = j - i;
                        break;
                    }
                }
            }
        }
        return result;
    }

    public static void main(String[] args) {
        String test = "123456";
        String substring = test.substring(1, 3);
        System.out.println(substring);
    }
}
